package d1_exception;

public class ExceptionDemo04 {
    public static void main(String[] args) {
        //目标: 自定义异常
        System.out.println("开始。。。");
        try {
            save(1500);
            System.out.println("执行成功了");
        } catch (Exception e) {
//            throw new RuntimeException(e);//这是在将异常对象抛出去,抛给JVM
            e.printStackTrace();
            System.out.println("执行失败了");
        }
        System.out.println("结束。。。");

    }
    //没用try --catch-->会将异常抛到上面的方法调用者,调用者再将异常抛给JVM,然后虚拟机将程序给干掉
    //用了try--catch就是把异常信息拦截,并打印出俩,并不会大程序给干掉,好处:可以知道底层是执行成功了还是失败了

    //判断年龄是否合法,用异常进行处理
    //好处:如果真的出现了这个问题,会将异常信息打印出来
    //    还会告诉上层,下层是成功了还是失败了
    public static void save(int age) throws AgeIllegalException {
        // throw 方法内部使用的, 创建异常并从此点抛出去
        // throws 方法上, 抛出方法内部的异常的异常给调用者
        if (age < 0 || age > 150) {
            // 这个年龄非法! 创建异常对象并立即抛出去
            throw new AgeIllegalException("/ age is Illegal");
        }
        System.out.println("年龄保存成功了, 年龄是:" + age);
    }
}
